Быстрый счётчик

Сделаем счётчик фронтов сигнала на 1-ом быстром входе. Вспомним, что если бы это делали на «обычном цилке ПЛК», то нам не удалось бы ловить импульсы менее 1 миллисекунды. Конечно, можно просто перевести быстрый вход в режим «быстрого счётчика», но напишем такую программу на PRU – она вполне может выступать базовым блоком для более сложных программ.

Если у вас открыта среда Hardella IDE, то можете либо открыть код примера в среде, либо создать свой проект на основе примера (File > New > Project > Fast counter).

Укажем длительность цилка ПЛК в 1 микросекунду:

PRU configuration

Таким образом, программа будет опрашивать входы не реже 1 раза в микросекунду. Т.е. можно будет уверенно ловить импульсы на частоте 250 кГц.

Программа счётчика

Программа счётчика нехитрая, но обратим внимание на следующее:

  1. В условии IF используется R_TRIG, но в секции объявлений переменных триггер не объявлен. Как так? Очень просто: в Hardella можно не объявлять переменные для «одноразовых» функциональных блоков.

  2. Переменная counter физически находится в памяти PRU, но она отмечена на синхронизацию с основным циклом ПЛК. Таким образом, результат быстрого счётчика будет доступен в основной программе на CoDeSys.

Обновлено:

Комментировать